amd hvm (svm): Print warning if NPT constraints on PAE are hit.
authorKeir Fraser <keir.fraser@citrix.com>
Wed, 16 Jan 2008 15:55:57 +0000 (15:55 +0000)
committerKeir Fraser <keir.fraser@citrix.com>
Wed, 16 Jan 2008 15:55:57 +0000 (15:55 +0000)
Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
xen/arch/x86/mm/p2m.c
xen/include/asm-x86/hvm/domain.h

index 09d376b8a9aba877b2a6d6e05378d15c3d80df8a..cb3e6a066de3ac7d54e6222834673daba3986290 100644 (file)
@@ -701,12 +701,19 @@ guest_physmap_add_entry(struct domain *d, unsigned long gfn,
         return -EINVAL;
 
 #if CONFIG_PAGING_LEVELS == 3
-    /* 32bit PAE nested paging does not support over 4GB guest due to 
+    /*
+     * 32bit PAE nested paging does not support over 4GB guest due to 
      * hardware translation limit. This limitation is checked by comparing
      * gfn with 0xfffffUL.
      */
     if ( paging_mode_hap(d) && (gfn > 0xfffffUL) )
+    {
+        if ( !test_and_set_bool(d->arch.hvm_domain.amd_npt_4gb_warning) )
+            dprintk(XENLOG_WARNING, "Dom%d failed to populate memory beyond"
+                    " 4GB: remove 'hap' Xen boot parameter.\n",
+                    d->domain_id);
         return -EINVAL;
+    }
 #endif
 
     p2m_lock(d);
index 269f33a7bd7cd49f91278ee257a45bf7f499b664..e38384462c416fcd39c00a51e8241743ff7b7208 100644 (file)
@@ -73,6 +73,10 @@ struct hvm_domain {
 
     /* Pass-through */
     struct hvm_iommu       hvm_iommu;
+
+#if CONFIG_PAGING_LEVELS == 3
+    bool_t                 amd_npt_4gb_warning;
+#endif
 };
 
 #endif /* __ASM_X86_HVM_DOMAIN_H__ */